// 引入 createStore
import { createStore, combineReducers } from "redux";

// 引入 @redux-devtools/extension 的 composeWithDevTools
import { composeWithDevTools } from "@redux-devtools/extension";

// 引入 拆分出去的 reducers
import todosReducer from "./reducers/todos";
import filtersReducer from "./reducers/filters";

// 创建 rootReducer - 使用 combineReducers
//    组合 拆分出去的 reducers
//    使用 combineReducers 去 组合拆分出去的 reducer
const rootReducer = combineReducers({
  // xx: xxReducer,
  //    key - 最终的 state 数据的 key 名
  todos: todosReducer,
  filters: filtersReducer,
});

// 创建 rootReducer - 自己实现
// function rootReducer(state = {}, action) {
//   return {
//     todos: todosReducer(state.todos, action),
//     filters: filtersReducer(state.filters, action),
//   };
// }

// 创建 store 对象
//    1. 第一个参数，传递 reducer 纯函数
//    2. 第二个参数，传递 composeWithDevTools() 实现 redux-devtools 的激活
const store = createStore(rootReducer, composeWithDevTools());

export default store;

/**
 * combineReducers
 *    1 - 组合拆分出去的 reducers
 *    2 - 返回的是一个函数
 *    3 - 默认使用 初始化的动作 去调用拆分的 reducer
 */
